import axios from 'axios'
//引入useCounterStore实例
import { useUserStore } from '../stores/userStore'
import { ElMessage } from 'element-plus'
import router from "@/router";

const request = axios.create({
    //设置beasURL
    baseURL: `http://localhost:8080`,
    //设置请求超时,单位毫秒
    timeout: 100000
})
//设置请求拦截（所有request对象发送请求，在请求之前都先执行请求拦截中内容）
request.interceptors.request.use(request => {
    //创建stote实例
    let store = useUserStore();
    //1.获取token
    if (store.token) {
        //设置请求头中携带token到后端
        request.headers.token = store.token; //在后端拦截器中，通过拦截器HttpServletRequest对象获取Token请求头
    }
    return request;
})

//设置响应拦截
request.interceptors.response.use(resp => {
    //定义变量设置异常信息
    let errMsg = "";
    //处理后端响应特殊异常
    if (resp.data.code == 527) { //请求中未携带token异常
        errMsg = resp.data.message;
        router.push("/") //跳转登录页面
        ElMessage.warning(errMsg); //显示异常信息
    } else if (resp.data.code == 525) {//表示token过期
        errMsg = resp.data.message;
        router.push("/") //跳转登录页面
        ElMessage.warning(errMsg); //显示异常信息
    } else if (resp.data.code == 526) { //表示非法token异常
        errMsg = resp.data.message;
        router.push("/") //跳转登录页面
        ElMessage.warning(errMsg); //显示异常信息
    }
    //创建stote实例
    let store = useUserStore();
    //获取响应体中token
    if (resp.headers.token) { //表示当前token有值
        store.setToken(resp.headers.token)
    }

    return resp;
})
//导入request
export default request